package com.aaa.controller;

import com.aaa.dao.UserinfoDao;
import com.aaa.dao.impl.UserinfoDaoImpl;
import com.aaa.entity.MyReturn;
import com.aaa.utils.Constants;
import com.aaa.utils.RetStatusEnum;
import com.alibaba.fastjson.JSON;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author ：Teacher陈（86521760@qq.com）
 * @date ：Created in 2022/6/6 9:16
 * @description：登录的控制器
 * @modified By：
 * @version: 1.0
 */
@WebServlet("/login")
public class LoginServlet  extends HttpServlet {
    /**
     *     实例化dao层的对象
     */
    UserinfoDao userinfoDao = new UserinfoDaoImpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //写登录逻辑
        /**
         * 登陆成功
         *      1,转发和重定向的方式进行页面的跳转（过时）
         *      2，通过js的方式windows.location.href(路由方式)
         *          需要回传登录状态
         *      showUser.jsp
         * 登陆失败
         *      login.jsp 提示登录失败
         */

        //将所有的参数存入一个map集合中
        Map<String,Object> map = new HashMap();
        //获取所有的参数名集合
        Enumeration<String> parameterNames = req.getParameterNames();
        //遍历所有的参数名
        while (parameterNames.hasMoreElements()){
            //获取第一个参数名
            String key=parameterNames.nextElement();
            //根据参数名获取参数值
            Object value=req.getParameter(key);
            //将参数名和参数值存入map集合中
            map.put(key,value);
        }
        MyReturn myReturn  = new MyReturn();
        switch (map.get("method")+""){
            case "login":
                if( userinfoDao.checkUser(map)){
                    //登录成功的时候，将用户名保存到session中
                    req.getSession().setAttribute("username",map.get("searchUserName").toString());
                    myReturn.setCode(RetStatusEnum.SUCCESS.getCode());
                }else
                {
                    myReturn.setCode(RetStatusEnum.FAILE.getCode());
                    myReturn.setMsg(Constants.ERROR_LOGIN);
                }
                break;
            default:
                System.out.println("不支持的方法");
                break;
        }
        //将返回的数据对象进行json字符串转换
        String jsonString = JSON.toJSONString(myReturn);
        resp.getWriter().write(jsonString);
    }
}
